package sparkDay3
import org.apache.spark.{SparkConf, SparkContext}
object SparkDemoThree {

    def main(args: Array[String]): Unit = {
      //1.配置项
      val conf = new SparkConf().setMaster("local[*]").setAppName("fileWordcount")
      //2.建构 sparkcontext
      val sc = new SparkContext(conf)
      sc.setLogLevel("error")

      // 从文件读取数据，转换为RDD
      val textRDD = sc.textFile("D:\\IDEA_Workspace\\Scala Workspace\\2024-2025\\16code\\data\\data.txt")

      // 解析每一行，提取出类型，并映射到(类型, 1)
      val typeRDD = textRDD.map { line =>
        val parts = line.split("\\\\00A") // 使用双反斜杠进行转义
        if (parts.length > 2) {
          (parts(2), 1) // 假设类型总是在第三个分割的部分
        } else {
          ("Unknown", 1) // 如果分割后的数组长度不够，则返回未知类型
        }
      }

      // 统计每个类型的出现次数
      val countRDD = typeRDD.reduceByKey((x, y) => x + y)

      // 输出结果
      countRDD.collect().foreach { case (typeName, count) =>
        println(s"($typeName,$count)")
      }

      // 停止SparkContext
      sc.stop()
    }


}
